package com.yykj.message.center.server.service.impl;

import com.tencentcloudapi.sms.v20210111.models.SendStatus;
import com.yykj.message.center.client.dto.MessageDTO;
import com.yykj.message.center.server.service.MessageService;
import com.yykj.message.center.server.util.RandomUtil;
import com.yykj.message.center.server.util.SmsUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

/**
 * @author chenl
 * @version 1.0
 * @date 2021/10/21 21:27
 */
@Slf4j
@Service("messageService")
public class MessageServiceImpl implements MessageService {


    public static void main(String[] args) {
        // 下发手机号码，采用e.164标准，+[国家或地区码][手机号]
        String[] phoneNumbers = {"18852574546"};
        // 生成6位随机数字字符串
        String smsCode = RandomUtil.randomNumbers(6);
        // 模板参数：若无模板参数，则设置为空（参数1为随机验证码，参数2为有效时间）
        String[] templateParams = {smsCode, SmsUtil.EXPIRE_TIME};
        // 发送短信验证码
        SendStatus[] sendStatuses = SmsUtil.sendSms(templateParams, phoneNumbers);

        if ("Ok".equals(sendStatuses[0].getCode())) {
            log.info("ok");
        }
    }

    @Override
    public MessageDTO getCode(String phoneNum) {
        // 下发手机号码，采用e.164标准，+[国家或地区码][手机号]
        String[] phoneNumbers = {"+86" + phoneNum};
        // 生成6位随机数字字符串
        String smsCode = RandomUtil.randomNumbers(6);
        // 模板参数：若无模板参数，则设置为空（参数1为随机验证码，参数2为有效时间）
        String[] templateParams = {smsCode, SmsUtil.EXPIRE_TIME};
        // 发送短信验证码
        SendStatus[] sendStatuses = SmsUtil.sendSms(templateParams, phoneNumbers);

        if ("Ok".equals(sendStatuses[0].getCode())) {
            MessageDTO messageDTO = new MessageDTO();
            messageDTO.setCode(smsCode);
            messageDTO.setTime(SmsUtil.EXPIRE_TIME);
            log.info("手机号为：{},获取验证码成功！验证码为：{},有效期为：{}",phoneNum,smsCode,SmsUtil.EXPIRE_TIME);
            return messageDTO;
        }
        return null;
    }
}
